<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>给你的一封信</title>
    <link type="text/css" rel="stylesheet" href="./file/default.css" />
    <script type="text/javascript" src="./file/jquery.min.js"></script>
    <script type="text/javascript" src="./file/jscex.min.js"></script>
    <script type="text/javascript" src="./file/jscex-parser.js"></script>
    <script type="text/javascript" src="./file/jscex-jit.js"></script>
    <script
      type="text/javascript"
      src="./file/jscex-builderbase.min.js"
    ></script>
    <script type="text/javascript" src="./file/jscex-async.min.js"></script>
    <script
      type="text/javascript"
      src="./file/jscex-async-powerpack.min.js"
    ></script>
    <script
      type="text/javascript"
      src="./file/functions.js"
      charset="utf-8"
    ></script>
    <script
      type="text/javascript"
      src="./file/love.js"
      charset="utf-8"
    ></script>
    <style type="text/css"></style>
  </head>

  <body>
    <div id="main">
      <div id="error">
        本页面采用HTML5编辑,目前您的浏览器无法显示,请换成谷歌(<a
          href="http://www.google.cn/chrome/intl/zh-CN/landing_chrome.html?hl=zh-CN&brand=CHMI"
          >Chrome</a
        >)或者火狐(<a href="http://firefox.com.cn/download/">Firefox</a
        >)浏览器，或者其他游览器的最新版本。
      </div>
      <audio autoplay="autoplay" height="100" width="100">
        <source src="renxi.mp3" type="audio/mp3" />
        <embed height="100" width="100" src="renxi.mp3" />
      </audio>
      <div id="wrap">
        <div id="text">
          <div id="code">
            <font color="#f0768b">
              <span class="say">致 婷婷</span><br /><br />
              <span class="say">一生如四季,我在最美好的时间</span><br />
              <span class="say">遇见了最好的你</span><br />
              <span class="say">我和你相遇在这个夏天</span><br />
              <span class="say">人生如春花夏叶,万物美好可爱</span><br /><br />
              <span class="say">世间的树叶一片片地飘落</span><br />
              <span class="say">颜色也渐渐变灰变棕</span><br />
              <span class="say">我们终将看见无数银装素裹的树</span><br />
              <span class="say">就像从童话故事走出来的一样</span><br />
              <span class="say">而我会数着时间</span><br />
              <span class="say">每一时,每一分,每一秒</span><br />
              <span class="say">直到时间的尽头,直到拥你入怀</span><br /><br />
              <span class="say">希望时间在此刻停驻</span><br />
              <span class="say">从前的日色变得慢</span><br />
              <span class="say">车,马,邮件都慢</span><br />
              <span class="say">
                <span class="space"></span>
                — 李星辉
              </span>
            </font>
          </div>
        </div>
        <div id="clock-box">
          <span class="STYLE1"></span>
          <font color="#f0768b">婷婷,据我们相遇</font>
          <span class="STYLE1">已经是……</span>
          <div id="clock"></div>
        </div>
        <canvas id="canvas" width="1100" height="680"></canvas>
      </div>
    </div>

    <script></script>

    <script>
      (function () {
        var canvas = $("#canvas");

        if (!canvas[0].getContext) {
          $("#error").show();
          return false;
        }

        var width = canvas.width();
        var height = canvas.height();
        canvas.attr("width", width);
        canvas.attr("height", height);
        var opts = {
          seed: {
            x: width / 2 - 20,
            color: "rgb(190, 26, 37)",
            scale: 2,
          },
          branch: [
            [
              535,
              680,
              570,
              250,
              500,
              200,
              30,
              100,
              [
                [
                  540,
                  500,
                  455,
                  417,
                  340,
                  400,
                  13,
                  100,
                  [[450, 435, 434, 430, 394, 395, 2, 40]],
                ],
                [
                  550,
                  445,
                  600,
                  356,
                  680,
                  345,
                  12,
                  100,
                  [[578, 400, 648, 409, 661, 426, 3, 80]],
                ],
                [539, 281, 537, 248, 534, 217, 3, 40],
                [
                  546,
                  397,
                  413,
                  247,
                  328,
                  244,
                  9,
                  80,
                  [
                    [427, 286, 383, 253, 371, 205, 2, 40],
                    [498, 345, 435, 315, 395, 330, 4, 60],
                  ],
                ],
                [
                  546,
                  357,
                  608,
                  252,
                  678,
                  221,
                  6,
                  100,
                  [[590, 293, 646, 277, 648, 271, 2, 80]],
                ],
              ],
            ],
          ],
          bloom: {
            num: 700,
            width: 1080,
            height: 650,
          },
          footer: {
            width: 1200,
            height: 5,
            speed: 10,
          },
        };

        var tree = new Tree(canvas[0], width, height, opts);
        var seed = tree.seed;
        var foot = tree.footer;
        var hold = 1;

        canvas
          .click(function (e) {
            var offset = canvas.offset(),
              x,
              y;
            x = e.pageX - offset.left;
            y = e.pageY - offset.top;
            if (seed.hover(x, y)) {
              hold = 0;
              canvas.unbind("click");
              canvas.unbind("mousemove");
              canvas.removeClass("hand");
            }
          })
          .mousemove(function (e) {
            var offset = canvas.offset(),
              x,
              y;
            x = e.pageX - offset.left;
            y = e.pageY - offset.top;
            canvas.toggleClass("hand", seed.hover(x, y));
          });

        var seedAnimate = eval(
          Jscex.compile("async", function () {
            seed.draw();
            while (hold) {
              $await(Jscex.Async.sleep(10));
            }
            while (seed.canScale()) {
              seed.scale(0.95);
              $await(Jscex.Async.sleep(10));
            }
            while (seed.canMove()) {
              seed.move(0, 2);
              foot.draw();
              $await(Jscex.Async.sleep(10));
            }
          })
        );

        var growAnimate = eval(
          Jscex.compile("async", function () {
            do {
              tree.grow();
              $await(Jscex.Async.sleep(10));
            } while (tree.canGrow());
          })
        );

        var flowAnimate = eval(
          Jscex.compile("async", function () {
            do {
              tree.flower(2);
              $await(Jscex.Async.sleep(10));
            } while (tree.canFlower());
          })
        );

        var moveAnimate = eval(
          Jscex.compile("async", function () {
            tree.snapshot("p1", 240, 0, 610, 680);
            while (tree.move("p1", 500, 0)) {
              foot.draw();
              $await(Jscex.Async.sleep(10));
            }
            foot.draw();
            tree.snapshot("p2", 500, 0, 610, 680);

            // 会有闪烁不得意这样做
            canvas
              .parent()
              .css("background", "url(" + tree.toDataURL("image/png") + ")");
            canvas.css("background", "#ffe");
            $await(Jscex.Async.sleep(300));
            canvas.css("background", "none");
          })
        );

        var jumpAnimate = eval(
          Jscex.compile("async", function () {
            var ctx = tree.ctx;
            while (true) {
              tree.ctx.clearRect(0, 0, width, height);
              tree.jump();
              foot.draw();
              $await(Jscex.Async.sleep(25));
            }
          })
        );

        var textAnimate = eval(
          Jscex.compile("async", function () {
            var together = new Date();
            together.setFullYear(2024, 7, 27); //时间年月日
            together.setHours(11); //小时
            together.setMinutes(13); //分钟
            together.setSeconds(0); //秒前一位
            together.setMilliseconds(2); //秒第二位

            $("#code").show().typewriter();
            $("#clock-box").fadeIn(500);
            while (true) {
              timeElapse(together);
              $await(Jscex.Async.sleep(1000));
            }
          })
        );

        var runAsync = eval(
          Jscex.compile("async", function () {
            $await(seedAnimate());
            $await(growAnimate());
            $await(flowAnimate());
            $await(moveAnimate());

            textAnimate().start();

            $await(jumpAnimate());
          })
        );

        runAsync().start();
      })();
    </script>
  </body>
</html>
